import java.util.Arrays;

public class NM2 {
    //通过计算数组实现一个数组的正确排序；
    //1，进行统计原数组中的每个元素的个数；将每个数组元素的个数存到计数数组中；
    //2，进行遍历计数数组，进行将计算数组中元素个数一一遍历到数组中去；
    public static void count(int[] array){
        int min=array[0];
        int max=array[0];
        for(int i=1;i< array.length;i++){
            if(array[i]<min){
                min=array[i];
            }
            if(array[i]>max){
                max=array[i];
            }
        }
        int len=max-min+1;
        int[] countNm=new int[len];
        for(int i=0;i< array.length;i++){
            countNm[array[i]-min]++;
        }
        int k=0;
        for(int i=0;i<len;i++){
            while(countNm[i]!=0){
                array[k]=min+i;
                k++;
                countNm[i]--;
            }
        }
    }
    public static void main(String[] args){
        int[] array={2,2,3,1,3,4,2,2,2,4,3,5,6,5,4,7,3,9,5,4,9,4,8};
        count(array);
        System.out.println(Arrays.toString(array));
    }

}
